package com.cesce.batch.cobros.items;

import java.math.BigDecimal;

import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.springframework.batch.item.ItemProcessor;

import com.cesce.batch.cobros.reverse.Cobcomunicados;
import com.cesce.batch.cobros.reverse.Cobestados;
import com.cesce.batch.cobros.reverse.Cobmotivos;
import com.cesce.batch.cobros.reverse.Cobregistro;



public class ResultadoHostProcessor implements ItemProcessor<Object, Object> {

	protected final Log logger = LogFactory.getLog(getClass());

	
	public Object process(Object item) throws Exception {

		Object result=null;
		Cobcomunicados com = null;
		Cobregistro reg = null;
		
	
		if(item instanceof Cobcomunicados) {
			Cobcomunicados aux = (Cobcomunicados) item;
			com = Cobcomunicados.findCobcomunicados(aux.getIdcomunicado());
			com.setImporte(aux.getImporte());
			com.setSptohost(aux.getSptohost());
			com.setNif(aux.getNif());
			com.setCodigocesce(aux.getCodigocesce());
			
			
			/** TODO: si viene motivo que no sea una aceptacion, la situacion es rechazada? sirve para algo el campo situacion de host? */
			com.setIdmotivo(aux.getIdmotivo());
			
			if(aux.getSituacion()!=null && new BigDecimal(aux.getSituacion())==Cobmotivos.ID_ACEPTADO_HOST) {
				com.setIdestado(Cobestados.findCobestados(Cobestados.ID_COMUNICADO_ACEPTADO));
			} else if(aux.getSituacion()!=null && new BigDecimal(aux.getSituacion())==Cobmotivos.ID_RECHAZADO_HOST) {
				com.setIdestado(Cobestados.findCobestados(Cobestados.ID_COMUNICADO_RECHAZADO));
			} else if(aux.getSituacion()!=null && new BigDecimal(aux.getSituacion())==Cobmotivos.ID_ERRONEO_HOST) {
				com.setIdestado(Cobestados.findCobestados(Cobestados.ID_COMUNICADO_ERRONEO));
			} else if(aux.getSituacion()!=null && new BigDecimal(aux.getSituacion())==Cobmotivos.ID_BAJA_HOST) {
				com.setIdestado(Cobestados.findCobestados(Cobestados.ID_COMUNICADO_BAJA));
			} 		
					
			result=com;
		}



		else if(item instanceof Cobregistro) {
			Cobregistro aux = (Cobregistro) item;
			reg = Cobregistro.findCobregistro(aux.getIdregistro());
			reg.setCobroscorrectos(new BigDecimal(aux.getCobrosCorrectosParteEntera() + "." + aux.getCobrosCorrectosParteDecimal()));
			reg.setIdmotivo(Cobmotivos.findCobmotivos(aux.getIdmotivo().getIdmotivo()));

			if(aux.getSituacion()!=null && new BigDecimal(aux.getSituacion())==Cobmotivos.ID_ACEPTADO_HOST) {
				reg.setIdestado(Cobestados.findCobestados(Cobestados.ID_RESULTADO_HOST_ACEPTADO));
			} else if(aux.getSituacion()!=null && new BigDecimal(aux.getSituacion())==Cobmotivos.ID_RECHAZADO_HOST) {
				reg.setIdestado(Cobestados.findCobestados(Cobestados.ID_RESULTADO_HOST_RECHAZADO));
			} else if(aux.getSituacion()!=null && new BigDecimal(aux.getSituacion())==Cobmotivos.ID_ERRONEO_HOST) {
				reg.setIdestado(Cobestados.findCobestados(Cobestados.ID_RESULTADO_HOST_ERROR));
			} else if(aux.getSituacion()!=null && new BigDecimal(aux.getSituacion())==Cobmotivos.ID_BAJA_HOST) {
				reg.setIdestado(Cobestados.findCobestados(Cobestados.ID_BAJA));
			} 						
			
			result=reg;
		}
		
		
		return result;
		
	}
	
	
}
